#include <iostream>
#include <memory>
#include <string>

using namespace std;


/*
\ brief:  游戏模板接口
\ author: 清晨与猫鱼
*/
class Game {
public:
    virtual void initialize() = 0;
    virtual void startPlay() = 0;
    virtual void endPlay() = 0;

    void play() {
        initialize();
        startPlay();
        endPlay();
    }
};


/*
\ brief:  板球
\ author: 清晨与猫鱼
*/
class Cricket 
    : public Game {
public:
    void initialize() {
        cout << "Cricket Game Initialized! Start playing." << endl;
    }

    void startPlay() {
        cout << "Cricket Game Started. Enjoy the game!" << endl;
    }

    void endPlay() {
        cout << "Cricket Game Finished!" << endl;
    }
};


/*
\ brief:  足球
\ author: 清晨与猫鱼
*/
class Football 
    : public Game {
public:
    void initialize() {
        cout << "Football Game Initialized! Start playing." << endl;
    }

    void startPlay() {
        cout << "Football Game Started. Enjoy the game!" << endl;
    }

    void endPlay() {
        cout << "Football Game Finished!" << endl;
    }
};


